package com.rao.gmall.product.api;

import com.rao.gmall.model.product.BaseCategoryView;
import com.rao.gmall.model.product.SkuInfo;
import com.rao.gmall.model.product.SpuSaleAttr;
import com.rao.gmall.product.service.ProductApiService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * @author nzmxfan
 * @create 2021-08-06-18:51
 */
@RestController
@RequestMapping("/api/product/inner")
public class ProductApiController {

    @Resource
    ProductApiService productApiService;

    /**
     * 获取 sku 基本信息与图片信息
     *
     * @param skuId
     * @return
     */
    @GetMapping("/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable("skuId") Long skuId) {
        return productApiService.getSkuInfo(skuId);
    }

    /**
     * 根据 category3Id 获取 一、二、三级分类名
     *
     * @param category3Id
     * @return
     */
    @GetMapping("/getCategoryView/{category3Id}")
    public BaseCategoryView getBaseCategoryView(@PathVariable("category3Id") Long category3Id) {

        return productApiService.getBaseCategoryView(category3Id);
    }

    /**
     * 根据 skuId 获取商品价格
     *
     * @param skuId
     * @return
     */
    @GetMapping("/getSkuPrice/{skuId}")
    public BigDecimal getSkuPrice(@PathVariable("skuId") Long skuId) {
        return productApiService.getSkuPrice(skuId);
    }


    /**
     * // Sku 销售属性相关信息（查出自己的sku组合，还要查出这个 sku 所在的 spu 定义了的所有销售属性和属性值）
     * <p>
     * 根据 skuId 获取该商品的 spu 的所有销售属性和属性值
     *
     * @param skuId
     * @param spuId
     * @return
     */
    @GetMapping("/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(@PathVariable("skuId") Long skuId,
                                                          @PathVariable("spuId") Long spuId) {
        return productApiService.getSpuSaleAttrListCheckBySku(skuId, spuId);
    }

    /**
     * 根据 spuId 获取当前sku的组合信息，用来切换商品
     *
     * @param spuId
     * @return
     */
    @GetMapping("/getSkuValueIdsMap/{spuId}")
    public Map getSkuValueIdsMap(@PathVariable("spuId") Long spuId) {
        return productApiService.getSkuValueIdsMap(spuId);
    }
}
